package main

import (
	"tool/utils"

	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/layout"
	"fyne.io/fyne/v2/widget"
)

// md5加密
func (app *config) md5Encryption() func() {
	return func() {

		w := fyne.CurrentApp().NewWindow("md5加密")

		input := widget.NewEntry()
		input.SetPlaceHolder("请输入字符串")
		input.Wrapping = 2     // 开启自动换行
		input.MultiLine = true //多行输入

		resultInput := widget.NewEntry()
		resultInput.SetPlaceHolder("加密结果")
		resultInput.Wrapping = 2     // 开启自动换行
		resultInput.MultiLine = true //多行输入

		startEncryptionBtn := widget.NewButton("开始加密", func() {
			hashString := utils.Md5(input.Text)
			resultInput.SetText(hashString)
		})
		overlayEncryptionBtn := widget.NewButton("叠加加密", func() {
			if input.Text == "" {
				toast("请输入加密字符串", w)
				return
			}

			if resultInput.Text == "" {
				toast("加密后可以叠加加密", w)
				return
			}

			hashString := utils.Md5(resultInput.Text)
			resultInput.SetText(hashString)
		})
		copyBtn := widget.NewButton("复制", func() {
			utils.CopyText(resultInput.Text)
		})
		emptyBtn := widget.NewButton("清空", func() {
			input.SetText("")
			resultInput.SetText("")
		})

		funcLayout := container.New(layout.NewHBoxLayout(), startEncryptionBtn, overlayEncryptionBtn, copyBtn, emptyBtn)
		inputLayout := container.New(layout.NewVBoxLayout(), input, resultInput, funcLayout)
		allLayout := container.NewBorder(inputLayout, nil, nil, nil, nil)
		w.SetContent(allLayout)

		w.SetFixedSize(true) // 设置固定大小，避免用户拖动改变大小

		// start 监听主窗口的关闭事件
		// 前提是必须设置主窗口
		w.SetOnClosed(func() {
			w.Close()
		})
		// end 监听主窗口的关闭事件

		// 设置窗口大小,
		w.Resize(fyne.NewSize(450, 200))
		w.CenterOnScreen()
		w.Show()
	}
}
